Para calcular el factorial (que se denota como ) de un número , hay que multiplicar todos los números desde 1 hasta . Es decir, el factorial de 4 es . Esto sugiere un programa que calcule el factorial haciendo una iteración.
Un programa previo más fácil podría ser uno en que mostramos precisamente los números desde 1 hasta , para cercionarnos de que pasamos por los números correctos. El programa es este:
#include <iostream> using namespace std; int main() { int i, N; cin >> N; for (i = 1; i <= N; i++) { cout << i << ' '; } cout << endl; }
Si pones un 10, este programa muesta por pantalla:
1 2 3 4 5 6 7 8 9 10
Ahora, lo podemos adaptar para que calcule el factorial. Se trata de añadir una variable fact que acumule el valor de las multiplicaciones sucesivas que vamos haciendo. Es decir, si calculamos el factorial de 5 y el for está en mitad del cálculo por la tercera iteración (cuando i es 3), fact debe contener la multiplicación hasta 3 (o sea, 6). Las dos iteraciones restantes multiplicarían fact por 4 y por 5 para conseguir el valor final.
Se trata entonces de declarar fact, poner su valor inicial a 1 (qué pasaria si lo ponemos a 0?), y en cada iteración del bucle acumular en fact la multiplicación por el número i en el que estamos:
int main() { int i, N, fact = 1; cin >> N; for (i = 1; i <= N; i++) { fact = fact * i; } cout << fact << endl; }
Una cosa importante de ver es que la inicialización de fact cumple con otra propiedad: el programa es correcto para igual a 0. Si es 0, entonces no se entra en el bucle ni una sola vez y fact se queda a 1, que es precisamente el valor por definición del factorial de 0.
En preparación